////类型转换构造函数
//#include <iostream>
//
//using namespace std;
//
//class Cat {
//public:
//    Cat(const char *name) : m_name(name) {
//        //[string m_name(name);]
//    }
//
//    void talk() {
//        cout << m_name << ":喵喵~~~~" << endl;
//    }
//
//private:
//    string m_name;
//
//    friend class Dog;//友元声明
//
//};
//
//class Dog {
//public:
//    Dog(const char *name) : m_name(name) {
//        //[string m_name=name;]
//    }
//
//    explicit Dog(const Cat &that) : m_name(that.m_name) {//类型转换构造（定制了Cat-->Dog的转换）
//        //[string m_name = that.m_name
//        cout << "Dog类的类型转换构造函数被调用" << endl;
//    }
//
//    void talk() {
//        cout << m_name << ": 汪汪~~~" << endl;
//    }
//
//private:
//    string m_name;
//};
//
//int main(void) {
////    Cat smallWhite("小白");//定义smallwhite,利用smallwhite.Cat("小白")-->触发类型转换构造函数
//    Cat smallWhite = static_cast<Cat>("小白");//定义匿名Cat类对象，利用匿名Cat类对象.Cat("小白")-->类型转换构造函数
//    //Cat smallWhite = 匿名Cat类对象
//    smallWhite.talk();
////    Dog bigYellow(smallWhite);//定义bigYellow，利用bigYello.Dog(smallwhite)-->类型转换构造函数
//    Dog bigYello = static_cast<Dog>(smallWhite);
//
////    Dog bigYellow = smallWhite;//Cat-->Dog 定义匿名Dog类对象.Dog(smallwhite)-->触发类型转换构造函数
//    //Dog bigYello = 匿名Dog类对象
//
//    int a;
//    double b = a;
//    return 0;
//}